package com.yyfax.pay.depository.service.inner;

import com.yyfax.framework.common.OpResponse;
import com.yyfax.pay.depository.domain.FuiouUserProtocol;
import com.yyfax.pay.depository.vo.FuiouUserProtocolVO;
import com.yyfax.pay.vo.depository.QueryUserProtocolSignReq;
import com.yyfax.pay.vo.depository.QueryUserProtocolSignRsp;
import com.yyfax.pay.vo.depository.UserProtocolSignSmsReq;
import com.yyfax.pay.vo.depository.UserProtocolSigningReq;

/**
 * 富友用户服务
 * 
 * @author buyi
 * @date 2018-06-13 16:38:20
 * @since v2.2.2
 */
public interface FuiouUserService {

	/**
	 * 保存用户协议信息
	 * 
	 * @author buyi
	 * @date 2018-06-13 16:58:39
	 * @since v2.2.2
	 * @param merchantCode
	 * @param params
	 * @return
	 * @throws Exception
	 */
	FuiouUserProtocolVO saveProtocol(String merchantCode, UserProtocolSignSmsReq params);

	/**
	 * 协议绑定发送短信验证码冷却和订单获取验证码次数控制
	 * 
	 * @author buyi
	 * @date 2018-06-14 14:59:38
	 * @since v1.0.0
	 * @param fuiouUserProtocol
	 */
	void doProtocolSignSmsCooldown(FuiouUserProtocol fuiouUserProtocol);

	/**
	 * 发送协议短信
	 * 
	 * @author buyi
	 * @date 2018-06-13 17:31:13
	 * @since v2.2.2
	 * @param fuiouUserProtocol
	 * @return
	 */
	OpResponse doProtocolSignSmsComposite(FuiouUserProtocol fuiouUserProtocol);

	/**
	 * 协议绑定确认
	 * 
	 * @author buyi
	 * @date 2018-06-15 15:11:10
	 * @since v2.2.2
	 * @param merchantCode
	 * @param params
	 * @return
	 */
	OpResponse doProtocolSigningComposite(String merchantCode, UserProtocolSigningReq params);

	/**
	 * 查询协议签约
	 * 
	 * @author buyi
	 * @date 2018-06-27 14:02:35
	 * @since v2.2.2
	 *
	 * @param merchantCode
	 * @param params
	 * @return
	 */
	OpResponse queryProtocolSignComposite(String merchantCode, QueryUserProtocolSignReq params);

	// /**
	// * 校验协议绑定发送短信token失效
	// *
	// * @author buyi
	// * @date 2018-06-19 19:57:10
	// * @since v2.2.2
	// * @param fuiouUserProtocol
	// * @param token
	// */
	// void validProtocolSignSmsToken(String merchantCode, String orderId, String token);
	//
	// /**
	// * 短信验证码输错次数控制
	// *
	// * @author buyi
	// * @date 2018-06-26 17:10:49
	// * @since v2.2.2
	// *
	// * @param merchantCode
	// * @param orderId
	// */
	// void doProtocolSigningMaxError(String merchantCode, String orderId);
}
